{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# 百度百科定义\n",
    "操作系统是管理计算机硬件与软件资源的计算机程序，同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。\n",
    "\n",
    "帮我们管理好计算机硬件，我们可以通过操作系统友好的使用计算机。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 操作系统分类\n",
    "\n",
    "操作系统体系结构划分：\n",
    "\n",
    "(1)简单体系结构。例如ucos系列、FreeRTOS、SylixOS、VxWorks(基本级)。特点：用户层与内核层在一个地址空间中。不使用或有限使用虚拟内存。\n",
    "\n",
    "(2)单体内核(宏内核)。例如,Linux、Unix、Windows、MacOS。特点：操作系统的进程管理、内存管理、设备驱动、文件系统、网络协议栈等都在一个地址空间中，内核十分巨大。\n",
    "\n",
    "(3)微内核。例如：QNX。特点：内核只保留进程进程管理、内存管理等内核组成模块，将设备驱动、文件系统、网络协议栈编程进程的方式运行，就是一个字：小。\n",
    "\n",
    "微内核VS宏内核：\n",
    "\n",
    "(1)系统可靠性：微内核只保留了最基本的内核组成模块，一旦像设备驱动、文件系统异常，不会影响内核运行；而宏内核中，例如你编写了驱动有bug，那整个系统基本都能挂掉了。微内核胜出。\n",
    "\n",
    "(2)系统性能：宏内核中所有内核组成模块在一个地址空间，模块与模块间通信不涉及内存地址空间的切换，所以速度快；但微内核以像消息队列的方式，完成内核和网络协议栈、设备驱动等模块的通信，这其中涉及内存地址空间的切换，必然形象速度。宏内核胜出。\n",
    "\n",
    "其实，微内核和宏内核都各有优势，在一个具体的操作系统设计时，会吸取各自的长处；例如，linux是宏内核，但其借鉴了微内核的设计思路，将内核模块引入操作系统中，可以在系统运行过程中，加载或卸载设备驱动等内核组成部分。\n",
    "\n",
    "按实时性划分：\n",
    "\n",
    "(1)实时系统。\n",
    "\n",
    "    <1>强实时系统。在指定时间内，一定完成该项任务。例如:VxWorks、SylixOS、QNX等。\n",
    "    \n",
    "    <2>弱(软)实时系统。在指定时间内，尽量完成该任务。例如:增加实时性的linux系统。\n",
    "    \n",
    "(2)非实时系统。例如，windows。\n",
    "\n",
    "影响实时性的几个因素：\n",
    "\n",
    "(1)中断设计。一般芯片或者操作系统不会配置为中断可嵌套模式，所以CPU进入中断后，除非执行完毕中断处理程序才能执行其他任务。这是一个很重要的指标，我之前你看过linux的部分网络设备驱动程序，有的在中断中记录事件，利用系统提供的网络软中断模式(此时，已经退出中断模式，cpu可以继续响应中断了)进行数据的处理，但有的驱动在中断里进行数据处理，如果cpu正在中断中处理网络数据，但此时来了一紧急中断，那只能等了。\n",
    "\n",
    "(2)内存管理。有了虚拟内存后，应用层进入内核，内核会应用层，必然消耗大量时间，影响指定时间内完成任务重要因素。\n",
    "\n",
    "但是，不是你使用了强实时系统，你的设备就能保证强实时的要求，例如你写一个驱动，在中断中完成任务，那因为你的驱动而响应整个系统的实时性。\n",
    "\n",
    "这么多种操作系统，我们该如何选择呢?\n",
    "\n",
    "(1)实时性要求极高的系统。可以使用商业的VxWorks和SylixOS，商业的是要收费的，而且VxWorks是美国红河公司的，技术支持的难度可想而知；国产自主可控的SylixOS是一个很好的选择，只是起步晚，成功的案例正在逐步积累，被领域内所认可需要时间。对于非商业的，可以使用FreeRTOS,开源免费的，目前是商业免费的。\n",
    "\n",
    "(2)任务要求多、功能复杂等的只能选择像linux这样的系统了。基本可以认为，计算机能完成什么样的功能，使用linux的嵌入式系统也能完成；当然要求你的芯片对性能是否有影响。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
